home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / ka9q / alpha.arc / ASYVEC.ASM < prev    next >
Assembly Source File  |  1987-12-22  |  3KB  |  167 lines

  1.     include lmacros.h
  2.     assume    ds:dataseg
  3.     public    sssave,spsave,intstk,doret
  4.  
  5.     ifdef    FARPROC
  6.     extrn    doret:far,asyint_:far,getintds:far
  7.     else
  8.     extrn    doret:near,asyint_:near,getintds:near
  9.     endif
  10.  
  11. ; asy0vec - asynch channel 0 interrupt handler
  12.     public    asy0vec_
  13. asy0vec_ proc    far
  14.     push    ds        ; save on user stack
  15.     call    getintds    ; establish interrupt data segment
  16.  
  17.     mov    ds:sssave,ss    ; stash user stack context
  18.     mov    ds:spsave,sp
  19.  
  20.     push    ds
  21.     pop    ss
  22.     lea    sp,intstk+512
  23.  
  24.     push    ax        ; save user regs on interrupt stack
  25.     push    bx
  26.     push    cx
  27.     push    dx
  28.     push    bp
  29.     push    si
  30.     push    di
  31.     push    es
  32.     push    ds
  33.     pop    es        ; set up es reg, so di can be used!!
  34.  
  35.     mov    ax,0        ; arg for service routine
  36.     push    ax
  37.     call    asyint_
  38.     pop    ax
  39.     jmp    doret
  40. asy0vec_    endp
  41.  
  42. ; asy1vec - asynch channel 1 interrupt handler
  43.     public    asy1vec_
  44. asy1vec_    proc    far
  45.     push    ds        ; save on user stack
  46.     call    getintds    ; establish interrupt data segment
  47.  
  48.     mov    ds:sssave,ss    ; stash user stack context
  49.     mov    ds:spsave,sp
  50.  
  51.     push    ds
  52.     pop    ss
  53.     lea    sp,intstk+512
  54.  
  55.     push    ax        ; save user regs on interrupt stack
  56.     push    bx
  57.     push    cx
  58.     push    dx
  59.     push    bp
  60.     push    si
  61.     push    di
  62.     push    es
  63.     push    ds
  64.     pop    es        ; set up es reg, so di can be used!!
  65.  
  66.     mov    ax,1        ; arg for service routine
  67.     push    ax
  68.     call    asyint_
  69.     pop    ax
  70.     jmp    doret
  71. asy1vec_    endp
  72.  
  73. ; asy2vec - asynch channel 2 interrupt handler
  74.     public    asy2vec_
  75. asy2vec_    proc    far
  76.     push    ds        ; save on user stack
  77.     call    getintds    ; establish interrupt data segment
  78.  
  79.     mov    ds:sssave,ss    ; stash user stack context
  80.     mov    ds:spsave,sp
  81.  
  82.     push    ds
  83.     pop    ss
  84.     lea    sp,intstk+512
  85.  
  86.     push    ax        ; save user regs on interrupt stack
  87.     push    bx
  88.     push    cx
  89.     push    dx
  90.     push    bp
  91.     push    si
  92.     push    di
  93.     push    es
  94.     push    ds
  95.     pop    es        ; set up es reg, so di can be used!!
  96.  
  97.     mov    ax,2        ; arg for service routine
  98.     push    ax
  99.     call    asyint_
  100.     pop    ax
  101.     jmp    doret
  102. asy2vec_    endp
  103.  
  104. ; asy3vec - asynch channel 3 interrupt handler
  105.     public    asy3vec_
  106. asy3vec_    proc    far
  107.     push    ds        ; save on user stack
  108.     call    getintds    ; establish interrupt data segment
  109.  
  110.     mov    ds:sssave,ss    ; stash user stack context
  111.     mov    ds:spsave,sp
  112.  
  113.     push    ds
  114.     pop    ss
  115.     lea    sp,intstk+512
  116.  
  117.     push    ax        ; save user regs on interrupt stack
  118.     push    bx
  119.     push    cx
  120.     push    dx
  121.     push    bp
  122.     push    si
  123.     push    di
  124.     push    es
  125.     push    ds
  126.     pop    es        ; set up es reg, so di can be used!!
  127.  
  128.     mov    ax,3        ; arg for service routine
  129.     push    ax
  130.     call    asyint_
  131.     pop    ax
  132.     jmp    doret
  133. asy3vec_    endp
  134.  
  135. ; asy4vec - asynch channel 4 interrupt handler
  136.     public    asy4vec_
  137. asy4vec_    proc    far
  138.     push    ds        ; save on user stack
  139.     call    getintds    ; establish interrupt data segment
  140.  
  141.     mov    ds:sssave,ss    ; stash user stack context
  142.     mov    ds:spsave,sp
  143.  
  144.     push    ds
  145.     pop    ss
  146.     lea    sp,intstk+512
  147.  
  148.     push    ax        ; save user regs on interrupt stack
  149.     push    bx
  150.     push    cx
  151.     push    dx
  152.     push    bp
  153.     push    si
  154.     push    di
  155.     push    es
  156.     push    ds
  157.     pop    es        ; set up es reg, so di can be used!!
  158.  
  159.     mov    ax,4        ; arg for service routine
  160.     push    ax
  161.     call    asyint_
  162.     pop    ax
  163.     jmp    doret
  164. asy4vec_    endp
  165.  
  166.     end
  167.